/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.itschapala.servicesnp.mbean;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.event.ActionEvent;
import mx.servicesnpayroll.bl.MembresiaBLLocal;
import mx.servicesnpayroll.bl.MembresiaDeMiembroBLLocal;
import mx.servicesnpayroll.dao.PagodemiembroFacadeLocal;
import mx.servicesnpayroll.model.Membresia;
import mx.servicesnpayroll.model.Membresiademiembro;
import mx.servicesnpayroll.model.Miembro;
import mx.servicesnpayroll.model.Pagodemiembro;

/**
 *
 * @author Grnmnd
 */
@ManagedBean
@SessionScoped
public class MembresiaDeMiembroMBean {
    @EJB
    private PagodemiembroFacadeLocal pagodemiembroFacade;
    @EJB
    private MembresiaBLLocal membresiaBL;
    @EJB
    private MembresiaDeMiembroBLLocal membresiaDeMiembroBL;
    private Miembro MiembroE;
    private Membresiademiembro membresiademiembro;
    private int membresiasidMembresia;
    private Membresia MembresiaE;
    private List<Membresiademiembro> membresiaDeMiembros;
    private int b = 0;

    /**
     * Creates a new instance of membresiaDeMiembroMBean
     */
    public MembresiaDeMiembroMBean() {
    }

    public Miembro getMiembroE() {
        return MiembroE;
    }

    public void setMiembroE(Miembro MiembroE) {
        this.MiembroE = MiembroE;
    }

    public List<Membresiademiembro> getMembresiademiembros() {
        return membresiaDeMiembros = membresiaDeMiembroBL.findAll();
    }

    public void setMembresiademiembros(List<Membresiademiembro> membresiaDeMiembros) {
        this.membresiaDeMiembros = membresiaDeMiembros;
    }

    public Membresiademiembro getMembresiademiembro() {
        return membresiademiembro;
    }

    public void setMembresiademiembro(Membresiademiembro membresiademiembro) {
        this.membresiademiembro = membresiademiembro;
    }

    public int getMembresiasidMembresia() {
        return membresiasidMembresia;
    }

    public void setMembresiasidMembresia(int membresiasidMembresia) {
        this.membresiasidMembresia = membresiasidMembresia;
    }

    //--------------------------------PROCESS---------------------------------
    public String prepararNuevo() {
        b = 1;
        membresiademiembro = new Membresiademiembro();
        return "MembresiaDeMiembroCrear";
    }

    public String prepararEditar(ActionEvent a) {
        b = 2;
        return "MembresiaDeMiembroCrear";
    }

    public void eliminar(ActionEvent a) {
        b = 3;
        guardar();
    }

    public String guardar() {
        switch (b) {
            case 1:
                membresiaDeMiembroBL.create(membresiademiembro);
                break;
            case 2:
                membresiaDeMiembroBL.edit(membresiademiembro);
                break;
            case 3:
                membresiaDeMiembroBL.remove(membresiademiembro);
        }
        return "miembroFT";
    }
    
    public String setComplete(){
        Date d=new Date();
        MembresiaE=membresiaBL.find(membresiasidMembresia);
        membresiademiembro.setMembresiasidMembresia(MembresiaE);
        membresiademiembro.setMiembrosidMiembro(MiembroE);
        membresiademiembro.setInicio(d);
        membresiademiembro.setActiva(true);
        System.out.println(MembresiaE.getTipoDuracion());
        if(MembresiaE.getTipoDuracion().equalsIgnoreCase("mensual")){
            long fina= Long.parseLong("2628000000");//Un mes equivale a 2.628.000.000 milisegundos
            long fnl=fina*MembresiaE.getDuracion();
            Date fin=new Date(d.getTime()+fnl);
            membresiademiembro.setFin(fin);
        }else if(MembresiaE.getTipoDuracion().equalsIgnoreCase("anual")){
            long fina= Long.parseLong("31536000000");//Un año equivale a 31.536.000.000 milisegundos
            long fnl=fina*MembresiaE.getDuracion();
            Date fin=new Date(d.getTime()+fnl);
            membresiademiembro.setFin(fin);
        }
        Pagodemiembro pdm =new Pagodemiembro();
        pdm.setMiembrosidMiembro(MiembroE);
        pdm.setDescripcion(""+MembresiaE);
        pdm.setMontoAPagar(MembresiaE.getCosto());
        pdm.setLiquidado(false);
        pdm.setMontoPagado(BigDecimal.ZERO);
        pdm.setEmpleado("FIXME");
        pagodemiembroFacade.create(pdm);
        return"MembresiaDeMiembroConfirmar";
    }
}
